package com.huangsm.concurrence.executor;

import java.util.concurrent.*;

/**
 * 定时执行者服务
 *
 * @author huang
 * @date 2019/2/14
 */
public class ScheduledExecutorServiceDemo {
    /**
     * java.util.concurrent.ScheduledExecutorService 是一个 ExecutorService， 它能够将任务延后执行，或者间隔固定时间多次执行。
     * 任务由一个工作者线程异步执行，而不是由提交任务给 ScheduledExecutorService 的那个线程执行。
     */
    public static void main(String[] args) {
        //首先一个内置 5 个线程的 ScheduledExecutorService 被创建。之后一个 Callable 接口的匿名类示例被创建然后传递给 schedule() 方法。后边的俩参数定义了 Callable 将在 5 秒钟之后被执行。
        ScheduledExecutorService scheduledExecutorService =
                Executors.newScheduledThreadPool(5);

        ScheduledFuture scheduledFuture =
                scheduledExecutorService.schedule(() -> {
                            System.out.println("Executed!");
                            return "Called!";
                        },
                        5,
                        TimeUnit.SECONDS);
    }
}
